#ifndef AHXGWNET_H_
#define AHXGWNET_H_

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <sys/wait.h>
#include <stdarg.h>

#include <string>
#include <algorithm>

#ifdef DEBUG
#define Debug(x) printf x; printf("\n"); fflush(stdout)
#else
#define Debug(x) /* nil... */
#endif

#define LOG(fmt, args...) ahxgwnet::Log::logMessage(fmt, __FILE__, __func__, __LINE__, ##args/*__VA_ARGS__*/)

namespace ahxgwnet {

class Socket;
class IOWrapper;
class Util;
class Runnable;
class Thread;
class ThreadMutex;
class ThreadGuard;
class Log;

}

#include "Socket.h"
#include "IOWrapper.h"
#include "Util.h"
#include "Runnable.h"
#include "Thread.h"
#include "ThreadMutex.h"
#include "Log.h"

#endif
